package com.cskaoyan.javase.oop2._1extends._5protected._2example;

/**
 * Object类是Java中所有类的父类，是祖先类
 * Java中所有类都是Object类的子类，都要继承它的成员
 * 其中有一个方法叫clone，克隆方法
 *  protected native Object clone() throws CloneNotSupportedException;
 * 它的访问权限修饰符是protected
 *
 *
 * @since 15:35
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) throws CloneNotSupportedException {
        /*
            Demo2是Object类的子类
            这里和java.lang.Object类肯定是不同包的关系
            要想访问clone
            需要创建子类自身对象才可以
            而Student属于“兄弟姐妹”类对象
         */
        Student s = new Student();
        // 'clone()' has protected access in 'java.lang.Object'
        // s.clone();

        // 只能创建自身对象访问
        Demo2 d = new Demo2();
        // Unhandled exception: java.lang.CloneNotSupportedException
        d.clone();


        Teacher t = new Teacher();
        t.clone();
    }
}
class Student{
    public static void test() throws CloneNotSupportedException {
        Student s = new Student();
        s.clone();
    }
}

class Teacher{
    // 方法的重写可以修改方法的访问权限
    @Override
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}